# Répertoire de travail :
SRC = ./src
INC = ./src/include
BIN = ./bin
DATA = ./data

# Nom des exécutables a générer :
BINTEST = $(BIN)/test_server.out
BINSERV = $(BIN)/server.out

# Compilateur
CC = gcc

# Flags de compilation
CFLAG = -g -Wall -ansi -pedantic -I$(INC)

all: $(BINTEST) $(BINSERV) cleano

$(BINSERV): $(BIN)/main.o $(BIN)/server.o $(BIN)/user.o $(BIN)/user.o $(BIN)/message.o
	@$(CC) -o $(BINSERV) $(BIN)/main.o $(BIN)/server.o $(BIN)/user.o $(BIN)/message.o -lpthread $(LDFLAGS)
	
$(BINTEST): $(BIN)/main_test.o $(BIN)/server.o $(BIN)/user.o $(BIN)/user.o $(BIN)/message.o
	@$(CC) -o $(BINTEST) $(BIN)/main_test.o $(BIN)/server.o $(BIN)/user.o $(BIN)/message.o -lpthread $(LDFLAGS)
	
$(BIN)/main_test.o: $(SRC)/main_test.c $(SRC)/server.h
	@$(CC) -o $(BIN)/main_test.o -c $(SRC)/main_test.c $(CFLAGS)
	
$(BIN)/main.o: $(SRC)/main.c $(SRC)/server.h
	@$(CC) -o $(BIN)/main.o -c $(SRC)/main.c $(CFLAGS)

$(BIN)/server.o: $(SRC)/server.c $(SRC)/server.h $(SRC)/inclusion.h
	@$(CC) -o $(BIN)/server.o -c $(SRC)/server.c $(CFLAGS)

$(BIN)/user.o: $(SRC)/user.c $(SRC)/user.h $(SRC)/inclusion.h
	@$(CC) -o $(BIN)/user.o -c $(SRC)/user.c $(CFLAGS)

$(BIN)/message.o: $(SRC)/message.c $(SRC)/message.h $(SRC)/user.h
	@$(CC) -o $(BIN)/message.o -c $(SRC)/message.c $(CFLAGS)
	

cleano:
	@rm -rf $(BIN)/*.o

clean:
	@rm -rf $(BIN)/*  
	@rm -rf $(DATA)/*

mrproper: clean
	@rm -rf $(BINSERV) $(BINTEST)
